import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:get/get.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';  // 🔥 导入 EasyLoading
import 'package:flutter_screenutil/flutter_screenutil.dart';  // 🔥 导入 ScreenUtil

import 'common/routers/index.dart';
import 'common/utils/index.dart';
import 'common/services/index.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 设置全局默认的系统UI样式
  _setSystemUIStyle();
  
  // 🔥 初始化 LoadingUtil（黑底半透明风格）
  LoadingUtil.init();
  debugPrint('✅ LoadingUtil 初始化完成');
  
  // 初始化应用生命周期管理器
  await _initAppLifecycle();
  
  // 初始化服务定位器
  await _initServices();
  
  runApp(const MyApp());
}

/// 设置系统UI样式
void _setSystemUIStyle() {
  debugPrint('🎨 设置系统UI样式 - 状态栏透明');
  
  // 使用工具类设置透明状态栏
  SystemUIUtils.setTransparentStatusBarDark();
  SystemUIUtils.setNormalMode();
  
  debugPrint('✅ 系统UI样式设置完成');
  
  // 调试信息
  if (kDebugMode) {
    final uiInfo = SystemUIUtils.getSystemUIInfo();
    debugPrint('📱 系统UI信息: $uiInfo');
  }
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    // 🔥 使用 ScreenUtilInit 包裹应用，初始化屏幕适配
    return ScreenUtilInit(
      // 设计稿尺寸（单位：dp）- 基于 iPhone X 的标准尺寸
      designSize: const Size(375, 812),
      // 是否根据屏幕宽度自适应文本
      minTextAdapt: true,
      // 支持分屏模式
      splitScreenMode: true,
      builder: (context, child) {
        return GetMaterialApp(
          title: '玩真的',
          debugShowCheckedModeBanner: false, // 去掉右上角DEBUG标签
          // 🔥 EasyLoading 配置（必须添加）
          builder: EasyLoading.init(),
          theme: ThemeData(
            colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
            // 🎯 全局解决AppBar滑动灰度问题
            appBarTheme: const AppBarTheme(
              surfaceTintColor: Colors.transparent,    // 移除MD3表面着色
              shadowColor: Colors.transparent,        // 移除阴影颜色  
              scrolledUnderElevation: 0,              // 滚动时elevation为0
            ),
          ),
          // 🌍 国际化配置（解决日期选择器等组件的 Localizations 问题）
          localizationsDelegates: const [
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
          ],
          supportedLocales: const [
            Locale('zh', 'CN'), // 中文简体
            Locale('en', 'US'), // 英文
          ],
          locale: const Locale('zh', 'CN'), // 默认语言
          fallbackLocale: const Locale('zh', 'CN'), // 回退语言
          initialRoute: RouteNames.systemSplash, // 初始路由设置为闪屏页面
          getPages: RoutePages.list, // 路由页面配置
          navigatorObservers: [
            RoutePages.observer, // 路由观察者
          ],
        );
      },
    );
  }
}

/// 初始化应用生命周期管理器
Future<void> _initAppLifecycle() async {
  debugPrint('🔄 初始化应用生命周期管理器');
  
  // 注册生命周期管理器为GetX服务
  Get.put(AppLifecycleManager.instance, permanent: true);
  
  // 添加一些全局生命周期回调示例
  AppLifecycleManager.instance.addForegroundCallback(() {
    debugPrint('📱 应用回到前台');
    // 这里可以添加前台逻辑，如刷新数据、恢复定时器等
  });
  
  AppLifecycleManager.instance.addBackgroundCallback(() {
    debugPrint('📱 应用进入后台');
    // 这里可以添加后台逻辑，如保存数据、暂停定时器等
  });
  
  AppLifecycleManager.instance.addStateChangeCallback((oldState, newState) {
    debugPrint('📱 应用状态变化: ${oldState.name} → ${newState.name}');
  });
  
  debugPrint('✅ 应用生命周期管理器初始化完成');
}

/// 初始化核心服务（隐私协议弹窗前）
/// 
/// 🎯 只初始化读取隐私协议状态所必需的最小服务：
/// - StorageService
/// - AppConfigService
/// 
/// ⚠️ 其他服务将在用户同意隐私协议后由 SplashController 初始化
Future<void> _initServices() async {
  debugPrint('🔧 初始化核心服务...');
  
  try {
    // ✅ 只初始化核心服务（读取隐私协议状态所需）
    await ServiceLocator.initCoreServices();
    
    debugPrint('✅ 核心服务初始化完成');
    debugPrint('💡 其他服务将在用户同意隐私协议后初始化');
    
  } catch (e) {
    debugPrint('❌ 核心服务初始化失败: $e');
    debugPrint('💡 将使用默认配置启动应用');
    // 如果初始化失败，可以继续运行应用，但功能可能受限
  }
}


